let s2 = 'Hello world!';

console.log(s2.startsWith('Hello')); // true
console.log(s2.endsWith('!')); // true
console.log(s2.includes('o')); // true

//这三个方法都支持第二个参数，表示开始搜索的位置。
//上面代码表示，使用第二个参数n时，endsWith的行为与其他两个方法有所不同。它针对前n个字符，而其他两个方法针对从第n个位置直到字符串结束。
console.log(s2.startsWith('world', 6)); // true
console.log(s2.endsWith('Hello', 5)); // true
console.log(s2.includes('Hello', 6)); // false

// repeat方法返回一个新字符串，表示将原字符串重复n次
console.log('x'.repeat(3)); // "xxx"
console.log('hello'.repeat(2.1)); // "hellohello"
console.log('na'.repeat(0)); // "

// ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度，会在头部或尾部补全。padStart()用于头部补全，padEnd()用于尾部补全。
// 上面代码中，padStart和padEnd一共接受两个参数，第一个参数用来指定字符串的最小长度，第二个参数是用来补全的字符串。
// 如果原字符串的长度，等于或大于指定的最小长度，则返回原字符串。
// 'x'.padStart(5, 'ab') // 'ababx'
// 'x'.padStart(4, 'ab') // 'abax'
// 'x'.padEnd(5, 'ab') // 'xabab'
// 'x'.padEnd(4, 'ab') // 'xaba'

// 如果用来补全的字符串与原字符串，两者的长度之和超过了指定的最小长度，则会截去超出位数的补全字符串。
// 'abc'.padStart(10, '0123456789')
// '0123456abc'

// 如果省略第二个参数，默认使用空格补全长度。
// 'x'.padStart(4) // '   x'
// 'x'.padEnd(4) // 'x   '

// padStart的常见用途是为数值补全指定位数。下面代码生成 10 位的数值字符串。
// '1'.padStart(10, '0') // "0000000001"
// '12'.padStart(10, '0') // "0000000012"
// '123456'.padStart(10, '0') // "0000123456"

// 另一个用途是提示字符串格式。
// '12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
// '09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

console.log();
console.log();
console.log();
console.log();
console.log();